home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / macrosrc.arc / WHILE.ASM < prev   
Encoding:
Assembly Source File  |  1983-11-17  |  1.5 KB  |  64 lines

  1.  
  2. *WHILE LOOP MACRO
  3. *USES: AC AND LET MACRO
  4. *
  5. *      WHILE COND
  6. *           [CONDITION COMP IN AC]
  7. *      DO
  8. *           [LOOP BODY-DONE IF AC TEST IS TRUE]
  9. *      NEXT
  10. *OR:
  11. *      WHILE COND,<LET EXPR>
  12. *      DO
  13. *           [LOOP BODY-DONE IF <LET EXPR> TEST IS TRUE]
  14. *      NEXT
  15.  
  16.        COPY MACROS.NEXT
  17.        COPY MACROS.DO
  18.  
  19. WHILE  $MACRO          C,EE   START WHILE CONDITIONAL
  20.        $VAR I,E,Q,W,T
  21.        $ASG '$$LPS' TO I.S    GET CNTXT VAR
  22.        $ASG I.SV+1 TO I.SV    PUSH CNTXT
  23.        $ASG '$$LP' TO Q.S
  24.        $ASG :Q::I.SV: TO I.SS MAKE THIS CNTXT NAME
  25.        $ASG '$$LAB' TO E.S    GET UIQUE LABEL
  26.        $ASG E.SV+1 TO E.SV    INCR
  27.        $ASG :I.SS: TO W.S     MAKE THIS CNTXT
  28.        $ASG E.SV TO W.SV      SAVE LABEL IN THIS CNTXT
  29.        $ASG 'EQ' TO T.S
  30.        $IF  C.SV=T.SV
  31.        $ASG 'BNZ' TO W.SS
  32.        $ELSE
  33.        $ASG 'NE' TO T.S
  34.        $IF  C.SV=T.SV
  35.        $ASG 'BZ' TO W.SS
  36.        $ELSE
  37.        $ASG 'LT' TO T.S
  38.        $IF  C.SV=T.SV
  39.        $ASG 'BGEZ' TO W.SS
  40.        $ELSE
  41.        $ASG 'GT' TO T.S
  42.        $IF  C.SV=T.SV
  43.        $ASG 'BLEZ' TO W.SS
  44.        $ELSE
  45.        $ASG 'LE' TO T.S
  46.        $IF  C.SV=T.SV
  47.        $ASG 'BGZ' TO W.SS
  48.        $ELSE
  49.        $ASG 'GE' TO T.S
  50.        $IF  C.SV=T.SV
  51.        $ASG 'BLZ' TO W.SS
  52.        $ELSE
  53.        $ASG :C.S: TO W.SS
  54.        $ENDIF
  55.        $ENDIF
  56.        $ENDIF
  57.        $ENDIF
  58.        $ENDIF
  59.        $ENDIF
  60. I$:W.SV: EQU $                TOP OF LOOP
  61.        $IF  EE.L#=0
  62.        LET  :EE:              DO LET
  63.        $ENDIF
  64.        $END